/*
分析代码，编译器会不会报错？
 */
package itMethod;
public class MethodTest06 {
    public static void main(String[] args) {
//       int  result=m(); //调用方法
//        System.out.println(result);
        int num=m(true);
        System.out.println("num="+num);
        System.out.println(m(true));
    }
    //错误：缺少返回语句
//    public static int m(){
//        boolean flag=true;
//        /*
//        对于编译器来说，编译器只知道flag变量是boolean类型
//        会认为flag有可能是false，有可能是true
//         */
//        if (flag){
//            //编译器觉得以下这行代码可能会执行，也可能不执行
//            //为了确保程序不出现任何异常，所以编译器会认为缺少返回语句
//            return 2;
//        }
//    }

    //怎么修改这个程序呢？
    //第一种方案：带有else分支，可以保证一定会有一个分支来执行
    //方法一
//    public static int m() {
//        boolean flag=true;
//        if (flag){
//            return 2;
//        }else {
//            return 9;
//        }
//    }
//}
//方法二
//return语句一旦执行，所在的方法就会结束
//    public static int m() {
//        boolean flag=true;
//        if (flag){
//            return 2;
//        }
//            return 9;
//    }


//    public static int m() {
//        boolean flag=true;
//        if (flag){
//            return 2;
//            System.out.println("hello1"); //错误：无法访问的语句，无效代码
//        }
//        System.out.println("hello2");//这行代码和上面的hello1的区别是：不在同一个域里面
//        return 9;
//        System.out.println("hello3");//错误：无法访问的语句，无效代码
//    }

    //三目运算符
//    public static int m(){
//        boolean flag=true;
//        return flag?1:0;
//    }


    public static int m(boolean flag){
        return flag?1:0;
    }
}